Tipología y ciclo de la vida de los datos

Máster universitario en Ciencia de datos (Data science)

Estudios de Informática, Multimedia y Telecomunicación

 

Practica 2: Limpieza y validación de los datos

Autores:

1. Descripción del proyecto

En los últimos años hemos visto gestas deportivas que podían parecer imprevisibles, cómo por ejemplo la consecución del título de la Premier Ligue por parte del Leicester C.F., o el título de la NBA de los Toronto Raptors, un equipo que no hace tanto era el peor de su división.

Además, en los últimos tiempos han proliferado las casas de apuestas, y aunque no nos posicionamos a favor de las apuestas y sabemos el gran problema que supone la ludopatía, ¿seríamos capaces de predecir los resultados mejor que las casas de apuestas y ganarles en su propio juego?

Supongamos que queremos ser capaces de ajustar un modelo para predecir resultados deportivos, y si el modelo es lo suficientemente preciso, realizar apuestas deportivas en función de las recomendaciones del sistema. Aunque para esto podríamos elegir muchas disciplinas deportivas como el baloncesto o el tenis, para nuestro caso hemos elegido el futbol, concretamente La Liga española.

Para ello, suponemos que los jugadores disponibles de cada equipo, así como su desempeño a lo largo de la temporada, pueden ayudarnos en esta tarea. Por ejemplo, para dos equipos de calidad similar, si un equipo tiene disponibles jugadores que han estado jugando muy bien y el otro equipo tiene jugadores con mala racha de partidos, el modelo debería predecir que ganará el primero.

El objetivo final sería tener un resultado estimado para cada partido (victoria local, empate, o derrota local), con una probabilidad para cada resultado. Posteriormente compararíamos nuestras probabilidades con las cuotas ofertadas por las casas de apuestas, y en caso de que en los testeos el modelo hubiese resultado robusto, apostaríamos en las apuestas que tuvieran más esperanza matemática.

2 Descripción del dataset

El segundo dataset muestra el detalle de cada partido disputado por los diferentes jugadores que han participado en la actual edición de LaLiga. Este dataset está dividido en siete secciones.

2.1. Carga del conjunto de datos

2.3. Exploración del Dataset

3. Limpieza de los datos

3.1 Tipos de datos

Vemos que varios tipos de datos estan mal seteados, asi que procedemos a modificarlo.

3.2 Valores vacíos

Vemos que se ha producido un error al cargar el CSV y se ha generado una columna extra, 'Unname:40', así que procedemos a eliminarla. También eliminamos la columna 'match_report', que es un dato extraido de más.

Por otro lado, podemos observar que hay mucho valores vacios en los siguientes campos:

3.3 Valores átipicos

En este paso, para todas las variables númericas, vamos a buscar valores átipicos o extremos.

En muchos campos vemos varios valores atípicos, pero analizando los datos, son valores que entran dentro de los posible, por eso se decide mantener dichos datos.

4. Análisis de los datos

Hacemos histogramas de los datos para entender mejor las distribuciones de las distintas variables

Podemos observar que estos datos están distorsionados por competiciones distintas a la Liga, filtramos.

Creamos nuevas variables a partir de 'result' que serán un código para el resultado del partido y los goles a favor y en contra en nuevas columnas

Comprobamos que las nuevas columnas se hayan creado correctamente.

4.1 Selección de los grupos de datos que se quieren analizar/comparar (p. e., si se van a comparar grupos de datos, ¿cuáles son estos grupos y qué tipo de análisis se van a aplicar?)

Nuestro objetivo va a ser predecir el resultado de los partidos en función de distintas variables. Análizar todas las variables en detalle conllevaría mucho esfuerzo, por lo que para esta práctica nos vamos a centrar en la variable 'touches'.

Analizando los gráficos no parece que siga una distribución normal, quizás una chi-cuadrado, aún así lo comprobaremos para la variables 'touches'.

4.2 Comprobación de la normalidad y homogeneidad de la varianza.

Primero usemos método gráficos, veamos por los gráficos Q-Q plot si nuestra variable touches es normal para los distintos grupos (equipos)

En los gráficos aparece una linea diagonal roja, la cercanía de los puntos a esa línea muestra la similitud con una distribución normal, cómo podemos ver en este caso los puntos están muy alejados, por lo que nuestras distribuciones no se parecen a las de una dist normal.

Veamos los totales, sin importar equipo.

Mismo resultado, muy alejado de una distribución normal.

Veamos por Shapiro-Wilk

Podemos ver cómo en todos los casos rechazamos H0, por lo que no aceptamos la hipótesis de normalidad, por Shapiro-Wilk.

Veamos por Kolmogorov-Smirnov

Los resultados son equivalentes al realizar el test K-S, por tanto, a raiz de estos dos test, los gráficos Q-Q plot y los gráficos de las distibuciones, podemos suponer que estos datos no siguen una distribución normal.

Aún así por el TCL podríamos asumir normalidad, ya que en cada grupo de datos tenemos 38 registros (los partidos que juega cada equipo de la liga).

comprobemos la homocesdasticidad

Gráficamente se aprecian diferentes varianzas, probemos el test de Levene. Comparamos real Madrid y Alavés ya que son los equipos más distintos entre sí. Para el test de Levene necesitamos normalidad en los datos, si seguimos el TCL podríamos utilizarlo

Para Fligner no necesitamos asumir normalidad.

Con un p-valor tan bajo la hipótesis nula de homocedasticidad es rechazada, por lo que asumimos heterocedasticidad, tanto por Levene cómo por fligner.

Veamos para dos equipos que parecen tener varianzas más parecidas: Valencia y Alavés.

Para los equipos Valencia y Alavés podemos ver que por el test de Levene tendríamos homocedasticidad.

Por el test de fligner los resultados son equivalentes. Probemos un test ANOVA.

Podemos ver que por el test ANOVA también rechazamos la hipótesis nula de homocedasticidad, por lo que decimos que hay una diferencia estadísticamente significativa entre los grupos.

4.3. Aplicación de pruebas estadísticas para comparar los grupos de datos. En función de los datos y el objetivo del estudio, aplicar pruebas de contraste de hipótesis, correlaciones, regresiones, etc. Aplicar al menos tres métodos de análisis diferentes.

Vamos a probar a predecir el resultado del partido (Derrota, Empate o Victoria) en función de variables del propio partido y de los jugadores. También probaremos a predecir la diferencia de goles esperada. Para ello en primer comprobaremos la correlación entre ambas variables.

Creamos una nueva variable diferencia de goles e analizamos su correlación

Valores positivos significan correlación positiva, es decir, a mayor número de pases mayor diferencia de goles, sin embargo la relación no es demasiado fuerte, ya que es un valor pequeño

La variable porcentaje de pases acertados está también positivamente correlacionada pero con muy poca fuerza.

Creamos los datasets necesarios para entrenar nuestro modelo. Vamos a filtar sólo por los jugadores que hayan jugado más de 10 minutos, que serán los que más impacto hayan tenido en el partido.

Ajustamos una regresión lineal para predecir la diferencia de goles

Veamos el error de las predicciones:

La regresión lineal no va muy bien, probelmos una regresión logística multinomial para intentar predecir quien gana el partido

Ajustamos el modelo y validamos por validación cruzada

Un modelo totalmente aleatorio predeciría un 33,3% de forma adecuada, por tanto un 49,2% no está mal, aunque tiene mucho margen de mejora.

Veamos que tipos de datos predice mejor y peor nuestro modelo.

Podemos observar que el modelo predice relativamente bien las victorias y las derrotas, pero no funciona bien en los empates. si quisieramos mejorar nuestro modelo deberíamos centrarnos en solventar ese punto.

Veamos los coeficientes del modelo:

Vemos que algunas variables no tienen el efecto esperado, vamos a eliminarlas para ver si nuestro modelo mejora.

Cómo podemos ver nuestro modelo a mejorado ligeramente, teniendo ahora por validacíón cruzada un 51,1% de precisión.

6. Conclusiones

Como podemos observar tenemos muchos datos y muy ricos, este análisis y desarrollo ha sido inicial, pero podríamos individualizarlo por ugador, añadir nuevas variables cómo racha de partidos, lesiones, étc. También podríamos probar otros modelos o el uso de otras variables, pero hay que tener en cuenta que es una tarea compleja, ya que los partidos de futbol tienen mucha aleatoriedad. Quizás sería interesante aplicar esta misma filosofía a tenes o baloncesto, que pueden depender de menos factores.

En cualquier caso para obtener el modelo hemos usado variables del propio partido, por lo que predecirlos a preori no sería posible, sin embargo esto podría ayudar a entrenadores en que centrarse para mejorar, por ejemplo si deben entrenar más los pases o los tiros a puerta.

Cómo conclusión este tema es muy ambicioso y necesitaría de un estudio mucho más amplio desde distintas perspectivas.

7. Video explicativo

Enlace al video explicativo de la PRA2 -> https://github.com/KoNGoL/Tipologia_prac1/blob/main/video_prac2_tipo.mp4

Tabla contibuciones

Repositorio GitHub

https://github.com/KoNGoL/Tipologia_prac1